<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="NacosSync,迁移,用户手册" />
	<meta name="description" content="NacosSync 迁移用户手册" />
	<!-- 网页标签标题 -->
	<title>NacosSync 迁移用户手册</title>
	<link rel="shortcut icon" href="https://img.alicdn.com/tfs/TB1hgJpHAPoK1RjSZKbXXX1IXXa-64-64.png"/>
	<link rel="stylesheet" href="/build/documentation.css" />
</head>
<body>
	<div id="root"><div class="documentation-page" data-reactroot="" data-reactid="1" data-react-checksum="-965633537"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/nacos_colorful.png" data-reactid="5"/></a><div class="search search-normal" data-reactid="6"><span class="icon-search" data-reactid="7"></span></div><span class="language-switch language-switch-normal" data-reactid="8">En</span><div class="header-menu" data-reactid="9"><img class="header-menu-toggle" src="/img/menu_gray.png" data-reactid="10"/><ul data-reactid="11"><li class="menu-item menu-item-normal" data-reactid="12"><a href="/zh-cn/index.html" data-reactid="13">首页</a></li><li class="menu-item menu-item-normal menu-item-normal-active" data-reactid="14"><a href="/zh-cn/docs/what-is-nacos.html" data-reactid="15">文档</a></li><li class="menu-item menu-item-normal" data-reactid="16"><a href="/zh-cn/blog/index.html" data-reactid="17">博客</a></li><li class="menu-item menu-item-normal" data-reactid="18"><a href="/zh-cn/community/index.html" data-reactid="19">社区</a></li><li class="menu-item menu-item-normal" data-reactid="20"><a href="https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0" data-reactid="21">企业版Nacos</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png" data-reactid="22"/></li><li class="menu-item menu-item-normal" data-reactid="23"><a href="https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&amp;positionCode=GP633620" data-reactid="24">招贤纳士</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png" data-reactid="25"/></li><li class="menu-item menu-item-normal" data-reactid="26"><a href="http://console.nacos.io/nacos/index.html" data-reactid="27">控制台样例</a></li></ul></div></div></header><div class="bar" data-reactid="28"><div class="bar-body" data-reactid="29"><img src="/img/docs.png" class="front-img" data-reactid="30"/><div class="bar-title" data-reactid="31"><span data-reactid="32">Nacos 文档</span><div class="bone bone-light" data-reactid="33"></div></div><img src="/img/docs.png" class="back-img" data-reactid="34"/></div></div><section class="content-section" data-reactid="35"><div class="content-body" data-reactid="36"><div class="sidemenu" data-reactid="37"><div class="sidemenu-toggle" data-reactid="38"><img src="https://img.alicdn.com/tfs/TB1E6apXHGYBuNjy0FoXXciBFXa-200-200.png" data-reactid="39"/></div><ul data-reactid="40"><li class="menu-item menu-item-level-1" data-reactid="41"><span data-reactid="42">Nacos </span><ul data-reactid="43"><li style="height:180px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="44"><span data-reactid="45"><!-- react-text: 46 -->Nacos是什么?<!-- /react-text --><img style="transform:rotate(0deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="47"/></span><ul data-reactid="48"><li class="menu-item menu-item-level-3" data-reactid="49"><a href="/zh-cn/docs/what-is-nacos.html" target="_self" data-reactid="50">Nacos简介</a></li><li class="menu-item menu-item-level-3" data-reactid="51"><a href="/zh-cn/docs/concepts.html" target="_self" data-reactid="52">概念</a></li><li class="menu-item menu-item-level-3" data-reactid="53"><a href="/zh-cn/docs/architecture.html" target="_self" data-reactid="54">架构</a></li><li class="menu-item menu-item-level-3" data-reactid="55"><a href="/zh-cn/docs/feature-list.html" target="_self" data-reactid="56">功能和需求列表</a></li></ul></li><li style="height:324px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="57"><span data-reactid="58"><!-- react-text: 59 -->快速开始<!-- /react-text --><img style="transform:rotate(0deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="60"/></span><ul data-reactid="61"><li class="menu-item menu-item-level-3" data-reactid="62"><a href="/zh-cn/docs/quick-start.html" target="_self" data-reactid="63">Nacos</a></li><li class="menu-item menu-item-level-3" data-reactid="64"><a href="/zh-cn/docs/quick-start-spring.html" target="_self" data-reactid="65">Nacos Spring</a></li><li class="menu-item menu-item-level-3" data-reactid="66"><a href="/zh-cn/docs/quick-start-spring-boot.html" target="_self" data-reactid="67">Nacos Spring Boot</a></li><li class="menu-item menu-item-level-3" data-reactid="68"><a href="/zh-cn/docs/quick-start-spring-cloud.html" target="_self" data-reactid="69">Nacos Spring Cloud</a></li><li class="menu-item menu-item-level-3" data-reactid="70"><a href="/zh-cn/docs/quick-start-docker.html" target="_self" data-reactid="71">Nacos Docker</a></li><li class="menu-item menu-item-level-3" data-reactid="72"><a href="/zh-cn/docs/use-nacos-with-dubbo.html" target="_self" data-reactid="73">Nacos Dubbo</a></li><li class="menu-item menu-item-level-3" data-reactid="74"><a href="/zh-cn/docs/use-nacos-with-kubernetes.html" target="_self" data-reactid="75">Nacos k8s</a></li><li class="menu-item menu-item-level-3" data-reactid="76"><a href="/zh-cn/docs/nacos-sync.html" target="_self" data-reactid="77">Nacos Sync</a></li></ul></li><li style="height:252px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="78"><span data-reactid="79"><!-- react-text: 80 -->用户指南<!-- /react-text --><img style="transform:rotate(0deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="81"/></span><ul data-reactid="82"><li class="menu-item menu-item-level-3" data-reactid="83"><a href="/zh-cn/docs/sdk.html" target="_self" data-reactid="84">Java的SDK</a></li><li class="menu-item menu-item-level-3" data-reactid="85"><a href="/zh-cn/docs/other-language.html" target="_self" data-reactid="86">其他语言的SDK</a></li><li class="menu-item menu-item-level-3" data-reactid="87"><a href="/zh-cn/docs/open-api.html" target="_self" data-reactid="88">Open-API指南</a></li><li class="menu-item menu-item-level-3" data-reactid="89"><a href="/zh-cn/docs/nacos-spring.html" target="_self" data-reactid="90">Nacos Spring</a></li><li class="menu-item menu-item-level-3" data-reactid="91"><a href="/zh-cn/docs/system-configurations.html" target="_self" data-reactid="92">Nacos系统参数介绍</a></li><li class="menu-item menu-item-level-3" data-reactid="93"><a href="/zh-cn/docs/faq.html" target="_self" data-reactid="94">FAQ</a></li></ul></li><li style="height:36px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="95"><span data-reactid="96"><!-- react-text: 97 -->运维指南<!-- /react-text --><img style="transform:rotate(-90deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="98"/></span><ul data-reactid="99"><li class="menu-item menu-item-level-3" data-reactid="100"><a href="/zh-cn/docs/deployment.html" target="_self" data-reactid="101">部署手册</a></li><li class="menu-item menu-item-level-3" data-reactid="102"><a href="/zh-cn/docs/cluster-mode-quick-start.html" target="_self" data-reactid="103">集群部署说明</a></li><li class="menu-item menu-item-level-3" data-reactid="104"><a href="/zh-cn/docs/management-api.html" target="_self" data-reactid="105">运维API</a></li><li class="menu-item menu-item-level-3" data-reactid="106"><a href="/zh-cn/docs/console-guide.html" target="_self" data-reactid="107">控制台手册</a></li><li class="menu-item menu-item-level-3" data-reactid="108"><a href="/zh-cn/docs/monitor-guide.html" target="_self" data-reactid="109">监控手册</a></li><li class="menu-item menu-item-level-3" data-reactid="110"><a href="/zh-cn/docs/nacos-config-benchmark.html" target="_self" data-reactid="111">服务配置模块压测报告</a></li><li class="menu-item menu-item-level-3" data-reactid="112"><a href="/zh-cn/docs/nacos-naming-benchmark.html" target="_self" data-reactid="113">服务发现模块压测报告</a></li><li class="menu-item menu-item-level-3" data-reactid="114"><a href="/zh-cn/docs/nacos-sync-use.html" target="_self" data-reactid="115">其他环境迁移到Nacos</a></li></ul></li><li style="height:36px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="116"><span data-reactid="117"><!-- react-text: 118 -->开源共建<!-- /react-text --><img style="transform:rotate(-90deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="119"/></span><ul data-reactid="120"><li class="menu-item menu-item-level-3" data-reactid="121"><a href="/zh-cn/docs/contributing.html" target="_self" data-reactid="122">贡献源码</a></li><li class="menu-item menu-item-level-3" data-reactid="123"><a href="/zh-cn/docs/contributing-flow.html" target="_self" data-reactid="124">贡献流程</a></li><li class="menu-item menu-item-level-3" data-reactid="125"><a href="/zh-cn/docs/pull-request.html" target="_self" data-reactid="126">pull request模板</a></li><li class="menu-item menu-item-level-3" data-reactid="127"><a href="/zh-cn/docs/how-to-reporting-bugs.html" target="_self" data-reactid="128">如何提交问题报告</a></li></ul></li><li style="height:36px;overflow:hidden;" class="menu-item menu-item-level-2" data-reactid="129"><span data-reactid="130"><!-- react-text: 131 -->社区<!-- /react-text --><img style="transform:rotate(-90deg);" class="menu-toggle" src="/img/arrow_down.png" data-reactid="132"/></span><ul data-reactid="133"><li class="menu-item menu-item-level-3" data-reactid="134"><a href="/zh-cn/docs/community.html" target="_self" data-reactid="135">社区</a></li><li class="menu-item menu-item-level-3" data-reactid="136"><a href="/zh-cn/docs/nacos-dev.html" target="_self" data-reactid="137">开发团队</a></li></ul></li></ul></li></ul></div><div class="doc-content markdown-body" data-reactid="138"><h1>NacosSync 迁移用户手册</h1>
<h2>手册目标</h2>
<ul>
<li>启动 NacosSync 服务</li>
<li>通过一个简单的例子，演示如何将注册到 Zookeeper 的 Dubbo 客户端迁移到 Nacos。</li>
</ul>
<h2>准备工作</h2>
<p>启动服务之前，你需要安装下面的服务：</p>
<ul>
<li>64bit OS: Linux/Unix/Mac/Windows supported, Linux/Unix/Mac recommended.</li>
<li>64bit JDK 1.8+: <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html">downloads</a>, <a href="https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/">JAVA_HOME settings</a>.</li>
<li>Maven 3.2.x+: <a href="https://maven.apache.org/download.cgi">downloads</a>, <a href="https://maven.apache.org/settings.html">settings</a>.</li>
<li>MySql 5.6.+</li>
</ul>
<h2>获取安装包</h2>
<p>有两种方式可以获得 NacosSync 的安装包：</p>
<ul>
<li>直接下载 NacosSync 的二进制安装包：<a href="https://github.com/nacos-group/nacos-sync/releases">nacosSync.${version}.zip</a></li>
<li>从 GitHub 上下载 NacosSync 的源码进行构建</li>
</ul>
<p>Package:</p>
<pre><code class="language-basic">cd nacosSync/
mvn clean package -U
</code></pre>
<p>目标文件的路径：</p>
<pre><code class="language-basic">nacos-sync/nacossync-distribution/target/nacosSync.${version}.zip
</code></pre>
<p>解压安装包之后,工程的文件目录结构：</p>
<pre><code class="language-basic">nacosSync
├── LICENSE
├── NOTICE
├── bin
│   ├── nacosSync.sql
│   ├── shutdown.sh
│   └── startup.sh
├── conf
│   ├── application.properties
│   └── logback-spring.xml
├── logs
└── nacosSync-server.${version}.jar
</code></pre>
<h2>初始化数据库</h2>
<p>系统默认配置的数据库是Mysql，也能支持其他的关系型数据库。
1.建库，缺省的数据库名字为“nacos_Sync”。
2.数据库表不需要单独创建，默认使用了hibernate的自动建表功能。
3.如果你的环境不支持自动建表，可以使用系统自带的sql脚本建表，脚本放在bin目录下。</p>
<h2>数据库配置</h2>
<p>数据库的配置文件放在<code>conf/application.properties</code>中：</p>
<pre><code class="language-basic">spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
</code></pre>
<h2>启动服务器</h2>
<pre><code class="language-bash">$ nacosSync/bin:
sh startup.sh  restart
</code></pre>
<h2>检查系统状态</h2>
<p>1.检查系统日志</p>
<p>日志的路径在<code>nacosSync/logs/nacosSync.log</code>，检查是否有异常信息。</p>
<p>2.检查系统端口</p>
<p>缺省的系统端口是<code>8081</code>，你可以自己定义在<code>application.properties</code>中。</p>
<pre><code class="language-bash"><span class="hljs-variable">$netstat</span> -ano|grep 8081
tcp        0      0 0.0.0.0:8081                0.0.0.0:*                   LISTEN      off (0.00/0/0)
</code></pre>
<h2>控制台</h2>
<p>访问路径：</p>
<pre><code>http://127.0.0.1:8081/#/serviceSync
</code></pre>
<p><img src="https://img.alicdn.com/tfs/TB1EKbkJ3HqK1RjSZFEXXcGMXXa-2866-606.png" alt="image.png"></p>
<p>如果检查没有问题，NacosSync 已经正常启动了，NacosSync 的部署结构：<img src="https://img.alicdn.com/tfs/TB107nfJ9zqK1RjSZFjXXblCFXa-1412-342.png" alt="image.png"></p>
<h2>开始迁移</h2>
<h3>迁移信息</h3>
<p>Dubbo服务的部署信息：<img src="https://img.alicdn.com/tfs/TB1Ci_eJ4TpK1RjSZR0XXbEwXXa-938-700.png" alt="image.png"></p>
<p>迁移的服务：</p>
<table>
<thead>
<tr>
<th>Service Name</th>
<th>Version</th>
<th>Group Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>com.alibaba.nacos.api.DemoService</td>
<td>1.0.0</td>
<td>zk</td>
</tr>
</tbody>
</table>
<h3>添加注册中心集群信息</h3>
<p>1.点击左侧导航栏中的“集群配置”按钮，新增加一个集群，先增加一个Zookeeper集群，选择集群类型为ZK。
<img src="https://img.alicdn.com/tfs/TB1oJDnJ7voK1RjSZFwXXciCFXa-2870-1130.png" alt="image.png"></p>
<blockquote>
<p>注意：集群名字可以自定义，但是一旦确认，不能被修改，否则基于此集群增加的任务，在 NacosSync 重启后，将不会恢复成功。</p>
</blockquote>
<p>2.同样的步骤，增加NacosSync集群。
<img src="https://img.alicdn.com/tfs/TB1HQPhJVzqK1RjSZFCXXbbxVXa-2846-1042.png" alt="image.png"></p>
<p>3.添加完成后，可以在列表中查询到：
<img src="https://img.alicdn.com/tfs/TB1AX6fJVYqK1RjSZLeXXbXppXa-2864-824.png" alt="image.png"></p>
<h3>添加同步任务</h3>
<p>1.增加一个同步任务，从Zookeeper集群同步到Nacos集群，同步的粒度是服务，Zookeeper集群则称为源集群，Nacos集群称为目标集群。
<img src="https://img.alicdn.com/tfs/TB1tF_fJVYqK1RjSZLeXXbXppXa-2838-1138.png" alt="imagesd.png"></p>
<p>添加完成之后，可以在服务同步列表中，查看已添加的同步任务：
<img src="https://img.alicdn.com/tfs/TB1l6uJJ9zqK1RjSZPcXXbTepXa-2824-570.png" alt="image.png"></p>
<p>2.同步完成之后，检查下数据是否同步成功到Nacos集群，可以通过Nacos的控制台进行查询。
<img src="https://img.alicdn.com/tfs/TB1tPneJ4TpK1RjSZR0XXbEwXXa-2872-828.png" alt="image.png"></p>
<p>3.此刻，数据已经成功从Zookeeper集群同步到了Nacos集群，部署结构如下：
<img src="https://img.alicdn.com/tfs/TB14kriJ6TpK1RjSZKPXXa3UpXa-1724-772.png" alt="image.png"></p>
<h3>Dubbo 客户端连接到 Nacos 注册中心</h3>
<h4>Dubbo Consumer客户端迁移</h4>
<p>Dubbo 已经支持Nacos注册中心，支持的版本为2.5+，需要增加一个Nacos注册中心的Dubbo扩展插件依赖：</p>
<pre><code class="language-basic">&lt;dependency&gt;
      &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
      &lt;artifactId&gt;dubbo-registry-nacos&lt;/artifactId&gt;
			&lt;version&gt;0.0.2&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<p>增加Nacos客户端的依赖：</p>
<pre><code class="language-basic">&lt;dependency&gt;
        &lt;groupId&gt;com.alibaba.nacos&lt;/groupId&gt;
        &lt;artifactId&gt;nacos-client&lt;/artifactId&gt;
        &lt;version&gt;0.6.2&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<p>配置Dubbo Consumer的Dubbo配置文件<code>consumer.yaml</code>，让客户端能够找到Nacos集群。</p>
<pre><code class="language-basic">spring:
  application:
name: dubbo-consumer
demo:
  service:
    version: 1.0.0
    group: zk
dubbo:
  registry:
    address: nacos://127.0.0.1:8848
</code></pre>
<p>不需要修改代码，配置更新完毕之后，你就可以重启你的应用，使之生效了。</p>
<p>Consumer发布完成之后，目前的部署结构如下：
<img src="https://img.alicdn.com/tfs/TB181fkJ3HqK1RjSZFEXXcGMXXa-1734-878.png" alt="image.png"></p>
<h4>Dubbo Provider迁移</h4>
<p>在升级Provider之前，你需要确保该Provider发布的服务，都已经配置在 NacosSync 中，同步的方式为从Nacos同步到Zookeeper，因为Provider升级连接到Nacos之后，需要确保老的Dubbo Consumer客户端能够在Zookeeper上订阅到该Provider的地址，现在，我们增加一个同步任务：
<img src="https://img.alicdn.com/tfs/TB1pdDnJ7voK1RjSZFwXXciCFXa-2872-1060.png" alt="image.png"></p>
<p><img src="https://img.alicdn.com/tfs/TB19Ey_J6DpK1RjSZFrXXa78VXa-2842-660.png" alt="image.png"></p>
<blockquote>
<p>注意：Nacos服务同步到Zookeeper，不需要填写版本号，你在选择源集群的时候，版本号的输入框会自动隐藏掉。</p>
</blockquote>
<p>同步任务完成后，你就可以升级Provider了，升级Provider的方法，参考升级Consumer的步骤。</p>
<h3>新的部署结构</h3>
<ul>
<li>在升级的过程中，会有新老版本的客户端同时存在，部署结构如下：</li>
</ul>
<p><img src="https://img.alicdn.com/tfs/TB14Y_iJ3HqK1RjSZFPXXcwapXa-1728-838.png" alt="image.png"></p>
<ul>
<li>所有的客户端迁移完成之后，部署结构如下：</li>
</ul>
<p><img src="https://img.alicdn.com/tfs/TB1Cg2dJYvpK1RjSZPiXXbmwXXa-1466-864.png" alt="image.png"></p>
<p>现在，Zookeeper集群，NacosSync集群就可以下线了。</p>
<h3>注意事项</h3>
<ul>
<li>同步任务添加之后，需要确保下服务是否成功同步到目标集群，可以通过目标集群的控制台进行查询。</li>
<li>NacosSync 支持高可用集群模式部署，你只需要把数据库配置成同一个即可。</li>
<li>如果梳理不清楚订阅和发布的服务，建议可以把服务都做双向同步。</li>
<li>Dubbo 客户端目前不支持 Nacos 的权重功能，如果你用到了权重功能，需要重新考虑一下方案是否合适。</li>
</ul>
</div></div></section><footer class="footer-container" data-reactid="139"><div class="footer-body" data-reactid="140"><img src="/img/nacos_gray.png" data-reactid="141"/><div class="cols-container" data-reactid="142"><div class="col col-12" data-reactid="143"><h3 data-reactid="144">愿景</h3><p data-reactid="145">Nacos 通过提供简单易用的动态服务发现、服务配置、服务共享与管理等服务基础设施，帮助用户在云原生时代，在私有云、混合云或者公有云等所有云环境中，更好的构建、交付、管理自己的微服务平台，更快的复用和组合业务服务，更快的交付商业创新的价值，从而为用户赢得市场。</p></div><div class="col col-6" data-reactid="146"><dl data-reactid="147"><dt data-reactid="148">文档</dt><dd data-reactid="149"><a href="/zh-cn/docs/what-is-nacos.html" target="_self" data-reactid="150">概览</a></dd><dd data-reactid="151"><a href="/zh-cn/docs/quick-start.html" target="_self" data-reactid="152">快速开始</a></dd><dd data-reactid="153"><a href="/zh-cn/docs/contributing.html" target="_self" data-reactid="154">开发者指南</a></dd></dl></div><div class="col col-6" data-reactid="155"><dl data-reactid="156"><dt data-reactid="157">资源</dt><dd data-reactid="158"><a href="/zh-cn/community/index.html" target="_self" data-reactid="159">社区</a></dd><dd data-reactid="160"><a href="https://www.aliyun.com/product/acm?source_type=nacos_pc_20181219" target="_self" data-reactid="161">云服务 ACM</a></dd><dd data-reactid="162"><a href="https://www.aliyun.com/product/edas?source_type=nacos_pc_20181219" target="_self" data-reactid="163">云服务 EDAS</a></dd><dd data-reactid="164"><a href="https://www.aliyun.com/product/ahas?source_type=nacos_pc_20190225" target="_self" data-reactid="165">云服务 AHAS</a></dd></dl></div></div><div class="copyright" data-reactid="166"><span data-reactid="167">@ 2018 The Nacos Authors | An Alibaba Middleware (Aliware) Project</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '';
  </script>
	<script src="/build/documentation.js"></script>
</body>
</html>